package Leetcode.ArrayAndLinkedList.climbStairs70;

/**
 * f(n) = f(n-1) + f(n-2)
 * 用一个数组保存f(n)
 *
 * 由于我们只是要得到最终的结果 前面的中间结果如果寸下来较为浪费内存
 * 故大数据下 不建议这么写
 */

/**
 * 次数 ： 2
 */
public class Solution3 {
    public int climbStairs(int n) {
        if(n <= 2) {
            return n;
        }
        int[] num = new int[n+1];
        num[1] = 1;
        num[2] = 2;
        for(int i = 3; i <= n; i++) {
            num[i] = num[i - 1] + num[i - 2];
        }
        return num[n];
    }

    public static void main(String[] args) {
        Solution3 solution = new Solution3();
        System.out.println(solution.climbStairs(8));
    }
}








/**
 public int climbStairs(int n) {

 if (n < 3) {
 return n;
 }
 int nums[] = new int[n + 1];
 nums[1] = 1;
 nums[2] = 2;
 for (int i = 3; i <= n; i++) {
 nums[i] = nums[i - 1] + nums[i - 2];
 }
 return nums[n];
 }
 */